package com.ruoyi.psi.sale.collection.mapper;

import com.ruoyi.psi.sale.collection.domain.SaleCollection;
import com.ruoyi.psi.sale.collection.domain.CollectionList;
import java.util.List;

/**
 * 销售收款
 * 数据层
 * @author Drj 2021/6/28
 */
public interface CollectionMapper {
    /**
     * 查询所有销售收款
     * @param collection 搜索条件
     * @return
     */
    public List<SaleCollection> selectCollectionList(SaleCollection collection);

    /**
     * 根据编号查询
     * @param collectionId 销售收款编号
     * @return
     */
    public SaleCollection selectCollectionById(String collectionId);
    /**
     * 获取最新的一条销售收款编号
     * @return
     */
    public String getCollectionId();

    /**
     * 新增销售收款
     * @param collection
     * @return
     */
    public int insertCollection(SaleCollection collection);

    /**
     * 更新销售收款
     * @param collection
     * @return
     */
    public int updateCollection(SaleCollection collection);

    /**
     * 删除销售收款
     * @param collection
     * @return
     */
    public int updateCollectionDeleteFlag(SaleCollection collection);


//收款详细

    /**
     * 根据销售订单编号、销售收款编号查询
     * @param collectionList
     * @return
     */
    public CollectionList selectCollectionListById(CollectionList collectionList);
    /**
     * 收款单对应收款详细（不包含出库金额，已收款金额）
     * @param collectionId 销售收款编号
     * @return
     */
    public List<CollectionList> selectCollectionListListById(String collectionId);

    /**
     * 已出库金额
     * @param saleOrderId 销售订单编号
     * @return
     */
    public Double getSaleDeliveryPriceById(String saleOrderId);

    /**
     * 已收款金额
     * @param saleOrderId 销售订单编号
     * @return
     */
    public Double getReceivedAmountById(String saleOrderId);

    /**
     * 新增销售详细
     * @param collectionList
     * @return
     */
    public int insertCollectionList(CollectionList collectionList);

    /**
     * 更新销售详细
     * @param collectionList
     * @return
     */
    public int updateCollectionList(CollectionList collectionList);

    /**
     * 删除销售详细
     * @param collectionList
     * @return
     */
    public int deleteCollectionList(CollectionList collectionList);

    /**
     * 新增销售收款时查询指定客户对应的销售订单以及销售退货单据
     * @param customerInfoId 客户编号
     * @return
     */
    public List<CollectionList> getCollectionBill(String customerInfoId);

    /**
     * 获取已收款项
     * @param collectionList
     * @return
     */
    public Double getAmountReceived(CollectionList collectionList);

    /**
     * 获取销售退货订单单据金额
     * @param saleOrderId 退货订单编号
     * @return
     */
    public Double getSalePriceTotalForReturn(String saleOrderId);

    /**
     * 获取销售订单单据金额
     * @param saleOrderId 销售订单编号
     * @return
     */
    public Double getSalePriceTotalForOrder(String saleOrderId);
}
